<?php

namespace Chaosyeo\SolarEngine\Event;

class AttributionProperties extends Properties
{
    protected $isAttr = true;          // 是否自主归因
    protected $adnetwork;              // 投放广告的渠道 ID
    protected $subChannel;             // 投放广告的子渠道
    protected $adaccountId;            // 投放广告的投放账号 ID
    protected $adaccountName;          // 投放广告的投放账号名称
    protected $adcampaignId;           // 投放广告的广告计划 ID
    protected $adcampaignName;         // 投放广告的广告计划名称
    protected $adofferId;              // 投放广告的广告单元 ID
    protected $adofferName;            // 投放广告的广告单元名称
    protected $adcreativeId;           // 投放广告的广告创意 ID
    protected $adcreativeName;         // 投放广告的广告创意名称
    protected $attributionPlatform;    // 监测平台

    /**
     * @param string $adnetwork 投放广告的渠道 ID（必传）
     * @param string $attributionPlatform 监测平台（必传）
     * @param array $params 可选参数数组，可包含：
     *   - isAttr: bool 是否自主归因
     *   - subChannel: string 投放广告的子渠道
     *   - adaccountId: string 投放广告的投放账号 ID
     *   - adaccountName: string 投放广告的投放账号名称
     *   - adcampaignId: string 投放广告的广告计划 ID
     *   - adcampaignName: string 投放广告的广告计划名称
     *   - adofferId: string 投放广告的广告单元 ID
     *   - adofferName: string 投放广告的广告单元名称
     *   - adcreativeId: string 投放广告的广告创意 ID
     *   - adcreativeName: string 投放广告的广告创意名称
     */
    public function __construct(int $platform, string $adnetwork, string $attributionPlatform, array $params = [], array $customProperties = [])
    {
        if (empty($adnetwork)) {
            throw new \InvalidArgumentException('Adnetwork is required');
        }
        if (empty($attributionPlatform)) {
            throw new \InvalidArgumentException('Attribution platform is required');
        }

        $this->adnetwork = $adnetwork;
        $this->attributionPlatform = $attributionPlatform;

        parent::__construct($platform, $params, $customProperties);
    }
}